package com.naml.g_buffered;

import java.io.*;

/**
 * @author marin
 * @version 1.0
 * @date 2025/4/23 21:16
 * @desc 使用字节缓冲流进行文件的拷贝--适用于视频、zip、图片等二进制文件
 */
@SuppressWarnings("all")
public class BufferedFileCopy05 {
    public static void main(String[] args) {
        //包装一个文件字节输入流
        BufferedInputStream bis = null;
        //包装一个文件字节输出流
        BufferedOutputStream bos = null;
        try{
            //因为FileInputStream extends InputStream，又因为BufferedInputStream里参数是InputStream，所以放入子类也可以。
            bis = new BufferedInputStream(new FileInputStream("/Users/marin/图片.png"));
            bos = new BufferedOutputStream(new FileOutputStream("/Users/marin/图片2.png"));
            int length = 0;
            while ((length = bis.read()) != -1) {
                bos.write(length);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //关闭外层包装流即可，底层会关闭底层流
            try {
                if (bis != null){
                    bis.close();
                }
                if (bos != null){
                    bos.close();
                }
            }catch (IOException e){

            }
        }
    }
}
